"""
数据库模型初始化文件
根据功能模块配置动态导入模型
"""
from app.core.config import settings
# 基础模型始终导入
from app.models.base.base import BaseModel

__all__ = ["BaseModel"]

# Tortoise ORM模型路径列表
TORTOISE_ORM_MODELS = []


# 审计日志模型
if getattr(settings, 'enable_audit_log', True):
    from app.models.origin.auditlog import AuditLog
    __all__.append("AuditLog")
    TORTOISE_ORM_MODELS.append("app.models.origin.auditlog")


# API和菜单模型
if getattr(settings, 'enable_api_management', True):
    from app.models.origin.api import MethodType, Api
    from app.models.origin.menus import MenuType, Menu
    __all__.extend(["MethodType", "Api", "MenuType", "Menu"])
    TORTOISE_ORM_MODELS.extend([
        "app.models.origin.api",
        "app.models.origin.menus"
    ])



# 导入家庭功能模块
if getattr(settings, 'enable_family_features', True):
    # 家庭系统核心模型
    from app.models.family.family_system import Family, FamilyMember
    __all__.extend(["Family", "FamilyMember"])
    TORTOISE_ORM_MODELS.append("app.models.family.family_system")
    
    # 家庭账本模型
    from app.models.family.account import AccountRecord
    __all__.extend(["AccountRecord"])
    TORTOISE_ORM_MODELS.append("app.models.family.account")

    # 家庭食谱模型
    from app.models.family.recipe import Recipe
    __all__.extend(["Recipe"])
    TORTOISE_ORM_MODELS.append("app.models.family.recipe")

    # 家庭宠物模型
    from app.models.family.pet import Pet
    __all__.extend(["Pet"])
    TORTOISE_ORM_MODELS.append("app.models.family.pet")


# 用户系统模型（条件导入）
if settings.enable_user_system:
    from app.models.base.user import User, Role, UserFamily, UserLoginLog
    __all__.extend(["User", "Role", "UserFamily", "UserLoginLog"])
    TORTOISE_ORM_MODELS.append("app.models.base.user")



# 系统配置模型（数据库启用时导入）
if settings.enable_database:
    from app.models.base.system import SystemConfig
    __all__.append("SystemConfig")
    TORTOISE_ORM_MODELS.append("app.models.base.system")
    
    # 数据库初始化日志（可选）
    from app.models.base.system import DatabaseInitLog
    __all__.append("DatabaseInitLog")
    
    # 操作日志模型（条件导入）
    if settings.enable_operation_logging:
        from app.models.base.system import OperationLog
        if "OperationLog" not in __all__:
            __all__.append("OperationLog")


## 系统模型
# 系统博客模型
from app.models.system.blog import Blog
__all__.extend(["Blog"])
TORTOISE_ORM_MODELS.append("app.models.system.blog")
## AI 项目模型
from app.models.system.aiprojects import AIProject
__all__.extend(["AIProject"])
TORTOISE_ORM_MODELS.append("app.models.system.aiprojects")
## AI 对话历史
from app.models.system.aichat import ChatHistory,ChatSession
__all__.extend(["ChatHistory","ChatSession"])
TORTOISE_ORM_MODELS.append("app.models.system.aichat")


# 确保没有重复的模型路径
TORTOISE_ORM_MODELS = list(set(TORTOISE_ORM_MODELS))

# 提供获取模型列表的函数
def get_enabled_models():
    """获取所有启用的模型名称"""
    return __all__

def get_tortoise_models():
    """获取Tortoise ORM需要的模型路径列表"""
    return TORTOISE_ORM_MODELS


# 导出函数
__all__.extend(["get_enabled_models", "get_tortoise_models"])


